Unified usage tracking mechanism for application

ABSTRACT

In general, in one aspect, the invention relates to a system that includes a computer processor, a tracking engine executing on the computer processor, and a translation engine executing on the computer processor. The tracking engine is configured to retrieve a translation engine from a translation engine provider system, detect a user-generated action has occurred, and generate a pre-translated event for the user generated action using the translation engine application programming interfaces (APIs). The translation engine is configured to translate the pre-translation event to obtain a first translated event, prepare the first translated event for transmission to a first tracking system, and send the first translated event to the first tracking system.

BACKGROUND

Locally- and web-hosted applications frequently include mechanisms thatdevelopers use to track the ways in which their users interact with theapplication. Such mechanisms are generally tied to a specific trackingsystem maintained by a third-party. The third-party system gathers andprocesses the tracking data and provides it to application developer.Some tracking services provided by different third-party systems maydiffer from some third-party systems and may be virtually identical toothers. As a result, developers must either select a single best fittracking system, or instrument their applications to send tracking datato multiple tracking systems.

SUMMARY

In general, in one aspect, the invention relates to a system thatincludes a computer processor, a tracking engine executing on thecomputer processor, and a translation engine executing on the computerprocessor. The tracking engine is configured to retrieve a translationengine from a translation engine provider system, detect auser-generated action has occurred, and generate a pre-translated eventfor the user generated action using the translation engine applicationprogramming interfaces (APIs). The translation engine is configured totranslate the pre-translation event to obtain a first translated event,prepare the first translated event for transmission to a first trackingsystem, and send the first translated event to the first trackingsystem.

In general, in one aspect, the invention relates to a method fortracking interactions between a user and an application. The methodincludes retrieving a translation engine, detecting a user-generatedaction occurs, and generating a pre-translated event for the usergenerated action using a translation engine application programminginterface (API) associated with the translation engine. The methodfurther includes translating the pre-translated event to obtain a firsttranslated event, preparing the first translated event for transmission,and sending the first translated event to a first tracking system.

In general, in one aspect, the invention relates to a non-transitorycomputer readable medium comprising instructions that, when executed bya processor, perform to a method for tracking interactions between auser and an application. The method includes retrieving a translationengine, detecting a user-generated action occurs, and generating apre-translated event for the user generated action using a translationengine application programming interface (API) associated with thetranslation engine. The method further includes translating thepre-translated event to obtain a first translated event, preparing thefirst translated event for transmission, and sending the firsttranslated event to a first tracking system.

Other aspects of the invention will be apparent from the followingdescription and the appended claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 shows a flow diagram of a system in accordance with one or moreembodiments of the invention.

FIGS. 2-3 show a flow chart in accordance with one or more embodimentsof the invention.

FIGS. 4A-4D show an example in accordance with one or more embodimentsof the invention.

FIG. 5 shows a computer system in accordance with one or moreembodiments of the invention.

DETAILED DESCRIPTION

Specific embodiments of the invention will now be described in detailwith reference to the accompanying figures. Like elements in the variousfigures are denoted by like reference numerals for consistency.

In the following detailed description of embodiments of the invention,numerous specific details are set forth in order to provide a morethorough understanding of the invention. However, it will be apparent toone of ordinary skill in the art that the invention may be practicedwithout these specific details. In other instances, well-known featureshave not been described in detail to avoid unnecessarily complicatingthe description.

In general, embodiments of the invention provide a method and system fortranslating user-generated action for tracking by multiple trackingsystems. Specifically, embodiments of the invention may be used togenerate one or more translated events and sending the translated eventsto one or more different tracking systems.

FIG. 1 shows a diagram of a system in accordance with one or moreembodiments of the invention. As shown in FIG. 1, the system includes aclient system (100), a translation engine providing system (102), andmultiple tracking systems (tracking system A (104A), tracking system N(104N)). The client system (100) includes an input module (106), anoutput module (108), and a client application (110). The clientapplication (110) includes a tracking engine (112) and an event cache(114). The tracking engine (112) includes a translation engine (116).

In one or more embodiments of the invention, the client system (100) isa computer system or group of computer systems configured to execute theclient application (110). The client system (100) may be implemented,for example, as a desktop computer system, a laptop computer system, atablet computer system, a smartphone, etc.

In one or more embodiments of the invention, the client application(110) is a software program executing on the client system (100) andconfigured to interact with a user of the client system (100). In oneembodiment of the invention, the client application (110) interacts witha user of the client system (100) to obtain data from the user, processdata provided by the user, and/or provide data to the user. Data used bythe client application (110) for interactions with the user may bestored locally, or may be sent to or obtained from a server system (notshown) configured to interact with the client application (110). Forexample, a client application (110) implemented as a financialmanagement application may obtain financial data from a user (via theinput module (106)) and send that financial data to a server system (notshown) for processing. The server system (not shown) may then sendprocessed data back to the financial management application, which inturn displays the processed data to the user (via the output module(108).

In one or more embodiments of the invention, the client application(110) is a platform (e.g., a web browser) upon which other programs maybe executed (e.g., a webpage). In one embodiment of the invention, aclient application (110) includes functionality to retrieve a program(e.g., a webpage) based on a resource address provided by the user. Inone embodiment of the invention, the retrieved program (not shown)includes the tracking engine (112). In one embodiment of the invention,the retrieved program (not shown) may further be configured to generatethe event cache (114). For example, a user may provide a web address toa client application (110) implemented as a web browser, and the clientapplication (110) may retrieve the webpage stored at the web address.The client application (110) may then execute the webpage, which isdisplayed to the user as an interactive website.

In one or more embodiments of the invention, the client application(110) interacts with the user via the input module (106) and the outputmodule (108). The input module (106) may include any combination ofhardware and software by which input is received by the clientapplication (110). Examples of input modules (106) include, but are notlimited to, a keyboard, a mouse, a touch interface, voice recognitionsoftware, a network communication connection, a system clock, etc. Theoutput module (108) may include any combination of hardware and softwareby which output is sent by the client application (110). Examples ofoutput modules (108) include, but are not limited to, a display, anetwork communication connection, an audio output device, etc.

In one or more embodiments of the invention, the tracking engine (112)is a portion of the client application (110) configured to monitorinteractions (i.e., user-generated actions) between a user and theclient application (110). In one embodiment of the invention, thetracking engine (112) is implemented as part of the client application(110). Alternatively, tracking engine (112) is part of a programretrieved by the client application (110) (e.g., instrumented in awebpage).

In one or more embodiments of the invention, a user-generated action isinput received from a user targeting one or more elements of the clientapplication (110). User-generated actions may include passiveuser-generated actions and active user-generated actions. In oneembodiment of the invention, a passive user-generated action is inputreceived without an affirmative act by the user. Examples of passiveuser-generated actions include, but are not limited to, the amount oftime a user spends on a particular screen and whether a text field wasleft blank by a user. In one embodiment of the invention, an activeuser-generated action is input received by an affirmative act by theuser (e.g., via the input module (106)). Examples of activeuser-generated actions include, but are not limited to, portions of ascreen that a user clicks on, time of day a user uses the clientapplication (110), and location from which a user accesses the clientapplication (110).

In one or more embodiments of the invention, the tracking engine (112)is implemented as code that listens for particular user-generatedactions. Specifically, the tracking engine (112) may be configured tolisten for a specific set of the user-generated actions selected by thedeveloper of the client application (110) or a program retrieved by theclient application (110). Upon the detection of a user-generated action,the tracking engine (112) generates a pre-translated event correspondingto the detected user-generated action.

In one or more embodiments of the invention, a pre-translated event is adescriptor of a user-generated action using an application programminginterface (API) for communication with the translation engine (116).Specifically, the translation engine (116) may be configured to acceptinformation (i.e., a pre-translated event) formatted according to atranslation engine API. For example, the user-generated action ofclicking a “cancel” button may correspond to a translation engine APIcommand (i.e., a pre-translated event) of “EVENT:CLICK_CANCEL”.

In one or more embodiments of the invention, a pre-translated eventincludes information about the circumstances under which theuser-generated action occurred. The information about the circumstancesunder which the user-generated action occurred includes a timestampindicating the time at which the user generated action occurred. In oneembodiment of the invention, the translation engine (116) includes theability to accept a translation engine API command that includes thetimestamp. For example, the user-generated action of clicking a “cancel”button at time “2109” may correspond to a translation engine API command(i.e., a pre-translated event) of “EVENT:CLICK_CANCEL/TIME:2109”. Suchinformation about the circumstances under which the user-generatedaction occurred may include other information such as, for example, anidentifier of the client system (100), an identifier of the clientapplication (110), client system (100) hardware information, clientsystem (100) software information, a session identifier, etc.

In one or more embodiments of the invention, the tracking engine (112)includes functionality to retrieve a translation engine (116).Specifically, the tracking engine (112) may, upon initial execution ofthe client application (110), request software code from a translationengine providing system (102). The tracking engine (112) may then usethe software code retrieved from the translation engine providing system(102) to instantiate a translation engine (116).

In one or more embodiments of the invention, the translation engineproviding system (102) is a computer system or group of computer systemsconfigured to store the translation engine (116) and provide thetranslation engine (116) in response to a request by a client system(100). In one embodiment of the invention, the translation engineproviding system (102) dynamically generates software code for thetranslation engine (116) based on parameters passed in the request bythe client system (100). Such dynamically generated software code may betailored to include translation capabilities to translate apre-translated event into a translated event recognizable by a specifictracking system (tracking system A (104A), tracking system B (104B)).

In one or more embodiments of the invention, the translation engineproviding system (102) generates a translation engine (116) usingpreconfigured parameters. Specifically, a developer may have thecapability to configure the translation engine providing system (102) togenerate a translation engine with specific capabilities (e.g.,translate pre-translated events into translated events targeting aspecified target tracking system or set of target tracking systems).Such a translation engine may then be retrieved by including a developeridentifier in the request for a translation engine (116). For example, adeveloper of a client application (110) may log into an account on thetranslation engine providing system (102) and configure a translationengine to translate all pre-translated events into translated eventsacceptable by Alpha Analytics (a tracking system (tracking system A(104A), tracking system N (104N))). The developer may then instrumentthe code of the client application (101) to include that developersaccount identifier in the request for the translation engine (116). Uponreceiving the request for the translation engine (116) and the developeraccount identifier, the translation engine providing system (102)provides the preconfigured translation engine to the requesting clientsystem (100).

In one or more embodiments of the invention, the translation engine(116) is a process or group processes configured to translate apre-translated event into a translated event. Specifically, thetranslation engine (116) includes functionality to receivepre-translated events generated using the translation engine (116) API,and in response, provide one or more corresponding translated eventsconfigured for submission to one or more tracking systems (trackingsystem A (104A), tracking system N (104N)). Translated events configuredfor submission to one or more tracking systems (tracking system A(104A), tracking system N (104N)) may include generating a trackingsystem API command corresponding to the pre-translated event. Thetranslated events may be transmitted to the tracking systems (trackingsystem A (104A), tracking system N (104N)) directly by the trackingengine (116), or may be provided to the tracking engine (112) foreventual submission to the tracking systems (tracking system A (104A),tracking system N (104N)).

In one or more embodiments of the invention, the translation engine(116) translates pre-translated events into translated events using datastored locally within the translation engine (116). Alternatively, thetranslation engine (116) translates pre-translated events intotranslated events using a translation server (not shown). In oneembodiment of the invention, the translation engine (116) submits apre-translated event to the translation server (not shown) and, inresponse, receives a translated event. Such a request may include, forexample, the pre-translated event and a tracking system API to which thetranslated event is to correspond.

In one or more embodiments of the invention, the translation engine(116) includes one or more translation keys (not shown). In oneembodiment of the invention, a translation key (not shown) is analgorithm that accepts all or part of a pre-translated event, andreturns all or part of a translated event. A translation key may parsethe pre-translated event and extract, rearrange, or remove portions ofthe pre-translated event to generate the translated event. In oneembodiment of the invention, each translation key is associated with adifferent tracking system API. In one embodiment of the invention, apre-translated event is submitted to the translation engine (116) with atarget tracking system. The translation engine (116) may select atranslation key corresponding to the target tracking system, and applythat translation key to the pre-translated event to generate thetranslated event.

In one or more embodiments of the invention, translated events generatedby the tracking engine (112) may be stored in the event cache (114). Inone embodiment of the invention, the event cache (114) is a mechanism bywhich translated events are stored in memory on the client system (100).In one embodiment of the invention, translated events are stored in theevent cache (114) if there is currently no or restricted access to thetarget tracking system (tracking system A (104A), tracking system N(104N)). For example, if communication with a target tracking system(tracking system A (104A), tracking system N (104N)) is conducted over anetwork, translated events may be stored in the event cache (114) if theclient application (110) detects that the client system (100) is notcurrently connected to the network.

In one or more embodiments of the invention, pre-translated events maybe stored in the event cache (114). Specifically pre-translated eventsmay be generated by the tracking engine (112) and stored in the eventcache (114) until such time that they are retrieved for translation bythe translation engine (116).

In one or more embodiments of the invention, a tracking system (trackingsystem A (104A), tracking system N (104N)) is a computer system or groupof computer systems configured to receive translated events sent by aclient system (100). Specifically, each tracking system (tracking systemA (104A), tracking system N (104N)) may be configured to obtaintranslated events from a number of client systems (e.g., client system(100)), analyze data from the translated events, and provide that dataanalysis to a developer of the client application or another interestedparty. Such data analysis may include metrics regarding the ways inwhich users of the client application interacts with the clientapplication.

In one or more embodiments of the invention, each tracking system(tracking system A (104A), tracking system N (104N)) has a trackingsystem API unique to that tracking system (tracking system A (104A),tracking system N (104N)). Specifically, a translated event generatedusing the tracking system API for tracking system A (104A) will not beacceptable by tracking system N (104N). In addition, a pre-translatedevent generated using the translation engine API maybe unacceptable byany tracking system.

In one or more embodiments of the invention, multiple translated eventsmay be generated from a single pre-translated event. Specifically, thetranslation engine (116) may be configured to receive a pre-translatedevent, and in response, generate a first translated event using thetracking system API for tracking system A (104A) and generate a secondtranslated event using the tracking system API for tracking system N(104N). Each translated event may then be sent to the correspondingtracking system.

FIG. 2 shows a flowchart for retrieving a translation engine inaccordance with one or more embodiments of the invention. While thevarious steps in these flowcharts are presented and describedsequentially, one of ordinary skill will appreciate that some or all ofthe steps may be executed in different orders, may be combined oromitted, and some or all of the steps may be executed in parallel.

In Step 210, the client application receives a request to load a view.In one embodiment of the invention, the view is part of the clientapplication and used to interact with a user of the client application.In one embodiment of the invention, the view is part of a website or webapplication and the request includes the network location of the websiteor web application.

In Step 212, the client application determines that the view requires atranslation engine. In one embodiment of the invention, thedetermination is made when a website or web application retrieved by theclient application includes code referencing the translation engine.

In Step 214, the client application requests the translation engine froma translation engine providing system using a uniform resource locator(URL) embedded in the view. In one embodiment of the invention, therequest for the translation engine includes parameters indicatingspecific tracking systems to which the client application intends tosend translated events. Specifically, a client application may request atranslation engine configured to translate pre-translated events intotranslated events acceptable by a specified tracking system. In oneembodiment of the invention, the translation engine software code isgenerated by the translation engine providing system based on thespecified tracking systems (i.e., capable of translating pre-translatedevents into translated events acceptable by the specified trackingsystem). In one embodiment of the invention, the request may alsoinclude a developer account identifier to associate the request with atarget developer.

In Step 216 the client application receives the translation engine fromthe translation engine providing system. In Step 218, the clientapplication executes the translation engine within the view.

FIG. 3 shows a flowchart for sending translated events to a trackingsystem accordance with one or more embodiments of the invention. Whilethe various steps in these flowcharts are presented and describedsequentially, one of ordinary skill will appreciate that some or all ofthe steps may be executed in different orders, may be combined oromitted, and some or all of the steps may be executed in parallel.

In Step 310, the client application listens for a user-generated action.In Step 312, the client application determines whether a user-generatedaction has occurred. If in Step 312, no user-generated action isdetected, then the flow returns to Step 310. If in Step 312, auser-generated action has occurred, then in Step 314, the clientapplication detects that the user-generated action has occurred.

In Step 316, the client application generates a pre-translated event forthe user-generated action using the translation engine API. In oneembodiment of the invention, the code of the client application isinstrumented such that a particular user-generated action triggers thesubmission of a corresponding pre-translated event to the translationengine.

In Step 318, the pre-translated event is translated into a translatedevent using the translation engine. In one embodiment of the invention,the translation engine includes functionality to translate thepre-translated event into a translated event using a tracking system APIfor a previously-specified tracking system. In one embodiment of theinvention, the tracking engine includes functionality to translate thepre-translated event into more than one translated event, each using adifferent tracking system API. In one embodiment of the invention, datawithin the pre-translated event specifies the tracking system ortracking systems to which the client application will send thetranslated events. In one embodiment of the invention, the translationengine includes functionality to obtain an address corresponding to alocation of the target tracking system.

In Step 320, the client application stores the translated event in theevent cache. In one embodiment of the invention, the event cache isimplemented as a data structure configured to store software objectsrepresenting translated events. In one embodiment of the invention, theevent cache data structure includes the ability to store a destinationaddress for each stored translated event. In Step 322, the clientapplication attempts to connect to the tracking system. In oneembodiment of the invention, the client application includesfunctionality to attempt to connect with multiple tracking systems. Inone embodiment of the invention, user-generated events occur while theclient system is not connected to the tracking servers.

In Step 324, the client application determines whether a connection tothe tracking system has been established. If in Step 324, the clientapplication determines that a connection to the tracking system has notbeen established, then in Step 326 the client application waits, andreturns to Step 322. If in Step 324, the client application determinesthat a connection to the tracking system has been established, then inStep 328 the client application sends the translated event to thetracking system. In one embodiment of the invention, all translatedevents stored in the event cache are sent to the respective trackingsystem once a connection to each tracking system has been established.

In one or more embodiments of the invention, translated events will onlybe accepted by a tracking system if the source of the translated eventis trusted. In one embodiment of the invention, a tracking system mayrequire authentication before a client system may submit a translatedevent. Such authentication may be embedded in the translated eventand/or may be performed between the client system and the trackingsystem prior to the transmission of the translated event. Authenticationmay include, but is not limited to, public/private key authenticationand username/password authentication.

In one embodiment of the invention, translated events are sent to thetracking systems with a timestamp indicating the time at which thecorresponding user-generated action occurred (as opposed to the time atwhich the tracking system receives the translated event). Therefore,data regarding the time at which the user-generated action occurred ismaintained despite any amount of time that the translated event spentstored in the event cache.

FIG. 4A shows an example system in accordance with one or moreembodiments of the invention. As shown in FIG. 4A, the system includes aclient system implemented as a laptop computer (400), a translationengine providing system (402), and two tracking systems (Alpha Analytics(404A), Beta Analytics (404B)). The laptop computer (400) includes aninput module implemented as a keyboard/mouse interface (406), an outputmodule implemented as a display interface (408), and a clientapplication (410). The client application (410) includes a trackingengine (412) and an event cache (414). The tracking engine (412)includes a translation engine (416).

FIG. 4B shows a user interface for a screen of the client application(410) in accordance with one or more embodiments of the invention. Thescreen is presented on display device (418) communicatively coupled tothe display interface (408). Presented on the display device (418) isthe client application display (420). The client application display(420) includes element A (422A) (a text input field), element B (422B)(a submit button), and element C (422C) (a cancel button). The clientapplication display (420) also includes a hidden embedded browser (424).

FIG. 4C shows an exemplary timeline for retrieving a translation enginein accordance with one or more embodiments of the invention.

In Step 430, the user (426) instructs the client application (410) toload client application display (420). For the purposes of this example,assume that client application (410) is a financial managementapplication. Further, assume that the client application display (420)is a view within the client application (410) used to obtain a yearlyincome from the user.

In Step 432, the client application begins to load the view softwarecode corresponding to the view of the client application (410),including portions of the view software code that comprise the trackingengine (412). In Step 434, the client application (410), as instructedby the view software code, creates a data structure for use by thetracking engine (412) as an event cache (414).

In Step 436, the client application (410) loads the portion of the viewsoftware code instructing the tracking engine (412) to request atranslation engine (416) from the translation engine providing system(402). For the purposes of the example, assume that the requestindicates that the tracking engine intends to submit translated eventsto two tracking systems (Alpha Analytics (404A) and Beta Analytics(404B)).

In Step 438, the translation engine providing system (402) providessoftware code corresponding to the translation engine (416). In Step440, the tracking engine (416) uses the software code obtained from thetranslation engine providing system (402) to instantiate the translationengine (416) as a hidden embedded browser (424) within the clientapplication display (420). For the purposes of the example, assume thatAlpha Analytics (404A) is a free event analysis tool that provideslimited analysis. Assume further that Beta analytics (404B) is a robustevent analysis tool that charges developers based on the number ofsubmitted translated events.

FIG. 4D shows an exemplary timeline in accordance with one or moreembodiments of the invention.

In Step 450, the user (426) clicks the submit button (element B (422B))without inputting any text into the text field (element A (422A)). InStep 452, the client application (410) provides this user-generatedaction to the tracking engine (412). In Step 454, the tracking engine(412) generates a pre-translated event for the user-generated actionusing the translation engine (416) API. For the purposes of thisexample, assume that the pre-translated event includes a session ID, anevent name, a target tracking system identifier, and a timestamp, and isgenerated as “SessionID:001_Event:SUMBIT-PRESS-EMPTY-FIELD_Target:ALPHA-ANALYTICS_Timestamp:083224”

In Step 456, the tracking engine (412) submits the pre-translated eventto the translation engine (416). In Step 458, the translation engine(416) generates a translated event using the Alpha Analytics (404A) APIbased on the pre-translated event“SessionID:001_Event:SUMBIT-PRESS-EMPTY-FIELD_Target:ALPHA-ANALYTICS₁₃Timestamp:083224”. In Step 460, the translation engine (416) stores thetranslated event in the event cache (414) along with an addresstargeting Alpha Analytics (404A).

In Step 462, the tracking engine (412) determines that a communicationconnection with Alpha Analytics (404A) has been established, andretrieves the translated event and target address from the event cache(414). In Step 464, the tracking engine (412) submits the translatedevent to Alpha Analytics (404A) using the target address.

In Step 466, the user (426) clicks the cancel button (element C (422C))after entering “$45,000” into the text field (element A (422A)). In Step468, the client application (410) provides this user-generated action tothe tracking engine (412). In Step 470, the tracking engine (412)generates a pre-translated event for the user-generated action using thetranslation engine (416) API. For the purposes of this example, assumethat the pre-translated event is generated as“SessionID:001_Event:CANCEL-PRESS-NONEMPTY-FIELD_Target:ALPHA-ANALYTICS;BETA-ANALYTICS_Timestamp:083356”

In Step 472, the tracking engine (412) submits the pre-translated eventto the translation engine (416). In Step 474, the translation engine(416) generates a first translated event using the Alpha Analytics(404A) API based on the pre-translated event“SessionID:001_Event:CANCEL-PRESS-NONEMPTY-FIELD_Target:ALPHA-ANALYTICS;BETA-ANALYTICS_Timestamp:083356”.In Step 476, the translation engine (416) stores the first translatedevent in the event cache (414) along with an address targeting AlphaAnalytics (404A). In Step 478, the translation engine (416) generates asecond translated event using the Beta Analytics (404B) API based on thepre-translated event“SessionID:001_Event:CANCEL-PRESS-NONEMPTY-FIELD_Target:ALPHA-ANALYTICS;BETA-ANALYTICS_Timestamp:083356”.In Step 480, the translation engine (416) stores the second translatedevent in the event cache (414) along with an address targeting BetaAnalytics (404B).

In Step 482, the tracking engine (412) determines that a communicationconnection with Alpha Analytics (404A) has been established, andretrieves the first translated event and Alpha Analytics (404A) targetaddress from the event cache (414). In Step 484, the tracking engine(412) submits the first translated event to Alpha Analytics (404A) usingthe Alpha Analytics (404A) target address.

In Step 486, the tracking engine (412) determines that a communicationconnection with Beta Analytics (404B) has been established, andretrieves the second translated event and Beta Analytics (404B) targetaddress from the event cache (414). In Step 488, the tracking engine(412) submits the second translated event to Beta Analytics (404B) usingthe Beta Analytics (404B) target address.

Embodiments of the invention may be implemented on virtually any type ofcomputer regardless of platform being used. For example, as shown inFIG. 5, a computer system (500) includes one or more processor(s) (502)such as a central processing unit (CPU) or other hardware processor(s),associated memory (504) (e.g., random access memory (RAM), cache memory,flash memory, etc.), a storage device (506) (e.g., a hard disk, anoptical drive such as a compact disk drive or digital video disk (DVD)drive, a flash memory stick, etc.), and numerous other elements andfunctionalities typical of today's computers (not shown). In one or moreembodiments of the invention, the processor (502) is hardware. Forexample, the processor may be an integrated circuit. The computer system(500) may also include input means, such as a keyboard (508), a mouse(510), or a microphone (not shown). Further, the computer system (500)may include output means, such as a monitor (512) (e.g., a liquidcrystal display (LCD), a plasma display, or cathode ray tube (CRT)monitor). The computer system (500) may be connected to a network (514)(e.g., a local area network (LAN), a wide area network (WAN) such as theInternet, or any other type of network) via a network interfaceconnection (not shown). Those skilled in the art will appreciate thatmany different types of computer systems exist, and the aforementionedinput and output means may take other forms. Generally speaking, thecomputer system (500) includes at least the minimal processing, input,and/or output means necessary to practice embodiments of the invention.

Further, those skilled in the art will appreciate that one or moreelements of the aforementioned computer system (500) may be located at aremote location and connected to the other elements over a network.Further, embodiments of the invention may be implemented on adistributed system having a plurality of nodes, where each portion ofthe invention may be located on a different node within the distributedsystem. In one embodiment of the invention, the node corresponds to acomputer system. Alternatively, the node may correspond to a processorwith associated physical memory. The node may alternatively correspondto a processor or micro-core of a processor with shared memory and/orresources. Further, software instructions in the form of computerreadable program code to perform embodiments of the invention may bestored, temporarily or permanently, on a non-transitory computerreadable storage medium, such as a compact disc (CD), a diskette, atape, memory, or any other computer readable storage device.

While the invention has been described with respect to a limited numberof embodiments, those skilled in the art, having benefit of thisdisclosure, will appreciate that other embodiments can be devised whichdo not depart from the scope of the invention as disclosed herein.Accordingly, the scope of the invention should be limited only by theattached claims.

What is claimed is:
 1. A system comprising: a computer processor; atracking engine executing on the computer processor and configured to:retrieve a translation engine from a translation engine provider system,detect a passive user-generated action has occurred and an activeuser-generated action has occurred, generate a first pre-translatedevent for the passive user generated action using a translation engineapplication programming interfaces (APIs), and generate a secondpre-translated event for the active user-generated action using thetranslation engine APIs; and a translation engine executing on thecomputer processor and configured to: translate the first pre-translatedevent and the second pre-translated event to obtain a first translatedevents, wherein the first translated events are in a first formatassociated with a first tracking system, translate the firstpre-translated event and the second pre-translated event to obtain asecond translated events, wherein the second translated events are in asecond format associated with a second tracking system, prepare thefirst translated events for transmission to the first tracking system,prepare the second translated events for transmission to the secondtracking system, send the first translated events to the first trackingsystem, and send the second translated events to the second trackingsystem.
 2. The system of claim 1, further comprising: an event cacheconfigured to store the first translated events, wherein preparing thefirst translated events for transmission to the first tracking systemcomprises retrieving the first translated events from the event cache.3. The system of claim 1, further comprising: a transmission engineproviding system comprising software code for the translation engine. 4.The system of claim 1, further comprising: a client applicationcomprising the tracking engine and the translation engine, wherein theclient application is configured to receive a user-generated action froman input module.
 5. A method for tracking interactions between a userand an application comprising: retrieving a translation engine;detecting a passive user-generated action occurs and an activeuser-generated action occurs; generating a first pre-translated eventfor the passive user generated action using a translation engineapplication programming interface (API) associated with the translationengine; generating a second pre-translated event for the active usergenerated action using the translation engine API associated with thetranslation engine; translating the first pre-translated event and thesecond pre-translated event to obtain a first translated events, whereinthe first translated events are in a format associated with a firsttracking system; translating the first pre-translated event and thesecond pre-translated event to obtain a second translated events,wherein the second translated events are in a format associated with asecond tracking system; preparing the first translated events fortransmission; preparing the second translated events for transmission;sending the first translated events to the first tracking system; andsending the second translated events to the second tracking system. 6.The method of claim 5, wherein preparing the first translated events fortransmission to the first tracking system comprises storing the firsttranslated events in an event cache, and wherein sending the firsttranslated events to the first tracking system comprises retrieving thefirst translated events from the event cache.
 7. The method of claim 6,wherein preparing the first translated events for transmission furthercomprises establishing a connection with the first tracking system. 8.The method of claim 5, wherein translating the first pre-translatedevent and the second pre-translated event to obtain the first translatedevents comprises: determining a target tracking system; retrieving atranslation key associated with the target tracking system; and applyingthe translation key to the first pre-translated event and the secondpre-translated event.
 9. A non-transitory computer readable mediumcomprising instructions that, when executed by a processor, perform amethod for tracking interactions between a user and an application, themethod comprising: retrieving a translation engine; detecting a passiveuser-generated action occurs and an active user-generated action occurs;generating a first pre-translated event for the passive user-generatedaction using a translation engine application programming interface(API) associated with the translation engine; generating a secondpre-translated event for the active user-generated action using thetranslation engine API associated with the translation engine;translating the first pre-translated event and the second pre-translatedevent to obtain a first translated events, wherein the first translatedevents are in a format associated with a first tracking system;translating the first pre-translated event and the second pre-translatedevent to obtain a second translated events, wherein the secondtranslated events are in a format associated with a second trackingsystem; preparing the first translated events for transmission;preparing the second translated events for transmission; sending thefirst translated events to the first tracking system; and sending thesecond translated events to the second tracking system.
 10. Thenon-transitory computer readable medium of claim 9, wherein preparingthe first translated events for transmission to the first trackingsystem comprises storing the first translated events in an event cache,and wherein sending the first translated events to the first trackingsystem comprises retrieving the first translated events from the eventcache.
 11. The non-transitory computer readable medium of claim 10,wherein preparing the first translated events for transmission furthercomprises establishing a connection with the first tracking system.